玩转Excel

您所在的位置:网站首页 excel 数值函数 玩转Excel

玩转Excel

2023-03-24 19:52| 来源: 网络整理| 查看: 265

LOOKUP是Excel中的一个查找函数,可以根据一个给定的数值或文本值在一个区域内查找匹配的值并返回相应的结果。

具体而言,LOOKUP函数有两种形式:

单向查找:此时LOOKUP函数会在一个排好序的区域中查找一个数值或文本值,并返回其相应的结果。公式如下:=LOOKUP(lookup_value, lookup_vector, [result_vector])其中,lookup_value为要查找的数值或文本值;lookup_vector为查找的区域;result_vector为结果区域(可选),如果省略,则返回lookup_vector中与lookup_value匹配的值。注意:lookup_vector必须是一个单行或单列的连续区域,并且其中的值必须按升序或降序排列。双向查找:此时LOOKUP函数会在一个二维表格中查找一个数值或文本值,并返回其相应的结果。公式如下:=LOOKUP(lookup_value, array)其中,lookup_value为要查找的数值或文本值;array为查找的二维表格。注意:array必须是一个由行和列标题构成的矩阵,且行和列标题必须按升序或降序排列。

直接使用LOOKUP函数,要求被查找区域必须按升序或者降序排列,这是因为LOOKUP函数使用二分法的算法进行查找。为了方便理解为什么使用LOOKUP函数必须要对被查找区域进行排序,这里简单介绍下二分法查找的原理。

二分法查找(Binary Search),也称为折半查找,是一种高效的查找算法。其原理是将一个有序数组(或列表)按中间位置分成左右两个部分,然后判断目标值与中间值的大小关系,如果目标值等于中间值,则查找成功,否则如果目标值比中间值小,则在左半部分继续查找,否则在右半部分继续查找,直到找到目标值或者查找结束为止。

使用二分法查找的数据,必须是有序数组或列表,因此LOOKUP函数的被查找区域必须是有序数组或列表。

下面举一个例子。

现有一个数表,其中编号有序排列,使用LOOKUP函数进行查找,得到如下结果。查找出来的数据显然是正确的。

如果编号这一列不是有序的,那么使用LOOKUP函数就会出现错误。

因为编号这一列中,中间位置的数字是12,使用LOOKUP函数的时候会发现,只有当查找值小于或等于12且查找值在A2到A8单元格中存在时,那么匹配出来的数值就是正确的。

但现实中,很多情况下不允许我们对数据表格重新排序,那这时就要慎用LOOKUP函数。这种情况下,可以使用如下变通方法。

这里,我们使用了LOOKUP(1,0/($A$2:$A$14=H2),$B$2:$B$14)这种变通方法。看到这个函数,大家可能对1,0/($A$2:$A$14=H2)这两部分比较头疼。

我们可以拆开这个公式的每个参数一步步来看。

$A$2:$A$14=H2,这一部分会把A2到A14内的每一个值与H2的值进行是否相等的判断,返回TRUR或FALSE,这里我们发现在倒数第5个位置有一个TRUE,这个位置也就是1(H2单元格)这个数字在A2:A14区域中的位置。

0/($A$2:$A$14=H2),这一部分实际上做了一个除法的处理,因为TRUE的值为1,FALSE的值为0,所以我们发现只有在倒数第5个位置有一个0出现,其他位置都是#DIV/0!,因为0不能做分母,所以只有这个位置有效。

LOOKUP(1,0/($A$2:$A$14=H2),$B$2:$B$14),这个函数中,被查找数值是1,由于数组{#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}中没有“1”这个数值,那么函数会查找小于1的最大值,所以0这个数值会被选中,对应到B2:B14区域,结果就是4,所以查找结果正确。

LOOKUP函数的强大之处在于多条件查找,比如这个例子。

总结:

1.直接使用LOOKUP函数时,必须对被查找区域进行排序,否则返回结果可能不准确。

2.如果数表不允许重新排序,可以使用=LOOKUP(1,0/((查找区域1=条件1)*(查找区域2=条件2)),返回值区域)这个形式进行精确查找。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3